/**
 * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
 *
 * 校验银行卡号合法性
 * @param cardNo string字符串 银行卡号
 * @return bool布尔型
 */
function validateCardNo (cardNo) {
  // write code here
  if (cardNo.length !== 16) return false
  cardNo = cardNo + '0' // 最后一位拼接为0
  let arr = cardNo.split('').map((item) => parseInt(item))
  arr.reverse()
  let sum = 0
  function toSum (n) {
    let he = 0 // 初始化
    while (n) {
      he += n % 10
      n = Math.floor(n / 10)
    }
    return he
  }
  for (let i = 1; i < arr.length; i++) {
    if (i % 2) {
      // 如果是奇数
      sum += arr[i] // 加上自己本身
    } else {
      let double = arr[i] * 2 // 自身乘2
      let sumDouble = toSum(double) // 个位十位
      sum += sumDouble
    }
  }
  if (sum % 10 === 0) {
    return true
  } else {
    return false
  }
}
// let cardNo = "6222350036567525"
// let cardNo = "6222800000923959680"
let cardNo = "6225682010858295133"
console.log(validateCardNo(cardNo));
module.exports = {
  validateCardNo: validateCardNo
};